<?php

declare (strict_types=1);

namespace app\store\model\shop;


use app\admin\model\Page as PageModel;
use app\store\model\shop\User as ShopUserModel;
use app\common\model\shop\shop\Shop as ShopModel;
use app\common\model\shop\shop\shop\Shop as ShopShopModel;
/**
 * 商户用户模型
 * Class StoreUser
 * @package app\store\model
 */
class Shop extends ShopModel
{
    /**
     * 获取列表数据
     * @param bool $isRecycle
     * @return \think\Paginator
     * @throws \think\db\exception\DbException
     */
    public function getList(bool $isRecycle = false): \think\Paginator
    {
        return $this->where('is_recycle', '=', (int)$isRecycle)
            ->where('is_delete', '=', 0)
            ->order(['sort' => 'asc', 'create_time' => 'desc'])
            ->paginate(15);
    }

    /**
     * 新增记录
     * @param array $data
     * @return bool|mixed
     */
    public function add(array $data)
    {
        if ($data['password'] !== $data['password_confirm']) {
            $this->error = '确认密码不正确';
            return false;
        }
        if (ShopUserModel::checkExist($data['user_name'])) {
            $this->error = '商家用户名已存在';
            return false;
        }
        return $this->transaction(function () use ($data) {
            $data['store_id'] = self::$storeId;
            // 添加小程序记录
            $data['is_recycle'] = 0;
            if ($status = $this->allowField(['shop_name','store_id'])->save($data)) {
                // 新增商家用户信息
                (new ShopUserModel)->add((int)$this['shop_id'], $data);
                // 新增商家附加信息
                $data['shop_id'] = $this['shop_id'];
                (new ShopShopModel)->add($data);
//                (new PageModel)->insertDefault((int)$this['shop_id']);
            }
            return $status;
        });
    }

    /**
     * 移入移出回收站
     * @param bool $isRecycle
     * @return bool|false
     */
    public function recycle(bool $isRecycle = true): bool
    {
        return $this->save(['is_recycle' => (int)$isRecycle]);
    }

    /**
     * 软删除
     * @return false|int
     */
    public function setDelete()
    {
        return $this->transaction(function () {
            // 删除商家用户信息
            StoreUserModel::setDelete($this['store_id']);
            // 设置当前商城为已删除
            return $this->save(['is_delete' => 1]);
        });
    }


}
